home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 2 / CU Amiga Magazine's Super CD-ROM 02 (1996)(EMAP Images)(GB)[!][issue 1996-04].iso / magazine / amiga_e / splitfichier / splitfgui.e < prev    next >
Text File  |  1994-05-02  |  18KB  |  417 lines

  1. /*******************************************************************************************/
  2. /* Source code generate by Gui2E v0.1 © 1994 NasGûl                                        */
  3. /*******************************************************************************************/
  4. /********************************************************************************
  5.  * << EUTILS HEADER >>
  6.  ********************************************************************************
  7.  ED        "EDG"
  8.  EC        "EC -e"
  9.  PREPRO    "EPP -t -c"
  10.  SOURCE    "SplitFGui.e"
  11.  EPPDEST   "SP_EPP.e"
  12.  EXEC      "SplitFGui"
  13.  ISOURCE   ""
  14.  HSOURCE   ""
  15.  ERROREC   ""
  16.  ERROREPP  ""
  17.  VERSION   "0"
  18.  REVISION  "1"
  19.  NAMEPRG   "SpliFGui"
  20.  NAMEAUTHOR "NasGûl"
  21.  ********************************************************************************
  22.  * HISTORY :
  23.  *******************************************************************************/
  24.  
  25. OPT OSVERSION=37
  26.  
  27. CONST F_LOAD=0,
  28.       F_SAVE=1
  29.  
  30. MODULE 'intuition/intuition','gadtools','libraries/gadtools','intuition/gadgetclass','intuition/screens',
  31.        'graphics/text','exec/lists','exec/nodes','exec/ports','eropenlib','utility/tagitem'
  32. MODULE 'asl','libraries/asl','mathtrans'
  33. ENUM ER_NONE,ER_LOCKSCREEN,ER_VISUAL,ER_CONTEXT,ER_MENUS,ER_GADGET,ER_WINDOW,ER_MEM
  34.  
  35. RAISE ER_MEM IF New()=NIL,
  36.       ER_MEM IF String()=NIL
  37.  
  38. DEF screen:PTR TO screen,
  39.     visual=NIL,
  40.     tattr:PTR TO textattr,
  41.     reelquit=FALSE,
  42.     offy
  43. /****************************************
  44.  * sp Definitions
  45.  ****************************************/
  46. DEF sp_window=NIL:PTR TO window
  47. DEF sp_glist=NIL
  48. /* Gadgets */
  49. ENUM GA_GSOURCE,GA_GDESTIN,GA_GCAP,GA_GBUF,GA_GLOAD,GA_GSPLIT,GA_GINFO
  50. /* Gadgets labels of sp */
  51. DEF gsource,gdestin,gcap,gbuf,gload,gsplit,ginfo
  52. /* Application def */
  53. DEF dosfich_source[256]:STRING
  54. DEF dos_destin[256]:STRING
  55. DEF fich_destin[256]:STRING
  56. DEF infotexte[80]:STRING
  57. DEF nbrsfichier,reellong,
  58.     capacite=12,startcap=12,restelastfichier,
  59.     reel_buff=65535,valbuf=1,conv=FALSE
  60. /*********************************/
  61. /* OpenCloseLibraries            */
  62. /*********************************/
  63. PROC p_OpenLibraries() HANDLE /*"p_OpenLibraries()"*/
  64. /********************************************************************************
  65.  * Para     : NONE
  66.  * Return   : ER_NONE if ok,else the error.
  67.  * Description  : Open libraires.
  68.  *******************************************************************************/
  69.     IF (intuitionbase:=OpenLibrary('intuition.library',37))=NIL THEN Raise(ER_INTUITIONLIB)
  70.     IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN Raise(ER_GADTOOLSLIB)
  71.     IF (gfxbase:=OpenLibrary('graphics.library',37))=NIL THEN Raise(ER_GRAPHICSLIB)
  72.     IF (aslbase:=OpenLibrary('asl.library',37))=NIL THEN Raise(ER_ASLLIB)
  73.     IF (mathtransbase:=OpenLibrary('mathtrans.library',37))=NIL THEN Raise(ER_MATHTRANSLIB)
  74.     Raise(ER_NONE)
  75. EXCEPT
  76.     RETURN exception
  77. ENDPROC
  78. PROC p_CloseLibraries()  /*"p_CloseLibraries()"*/
  79. /********************************************************************************
  80.  * Para     : NONE
  81.  * Return   : NONE
  82.  * Description  : CLose Libraries.
  83.  *******************************************************************************/
  84.     IF mathtransbase THEN CloseLibrary(mathtransbase)
  85.     IF aslbase THEN CloseLibrary(aslbase)
  86.     IF gfxbase THEN CloseLibrary(gfxbase)
  87.     IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
  88.     IF intuitionbase THEN CloseLibrary(intuitionbase)
  89. ENDPROC
  90. /*********************************/
  91. /* ScreenWindow Proc             */
  92. /*********************************/
  93. PROC p_SetUpScreen() HANDLE /*"p_SetUpScreen()"*/
  94. /********************************************************************************
  95.  * Para     : NONE
  96.  * Return   : ER_NONE if ok,else the error.
  97.  * Description  : Lock Pubscreen workbench.
  98.  *******************************************************************************/
  99.     IF (screen:=LockPubScreen('Workbench'))=NIL THEN Raise(ER_LOCKSCREEN)
  100.     IF (visual:=GetVisualInfoA(screen,NIL))=NIL THEN Raise(ER_VISUAL)
  101.     offy:=screen.wbortop+Int(screen.rastport+58)+1
  102.     Raise(ER_NONE)
  103. EXCEPT
  104.     RETURN exception
  105. ENDPROC
  106. PROC p_SetDownScreen() /*"p_SetDownScreen()"*/
  107. /********************************************************************************
  108.  * Para     : NONE
  109.  * Return   : NONE
  110.  * Description  : Unlock pubscreen workbench.
  111.  *******************************************************************************/
  112.     IF visual THEN FreeVisualInfo(visual)
  113.     IF screen THEN UnlockPubScreen(NIL,screen)
  114. ENDPROC
  115. PROC p_InitspWindow() HANDLE /*"p_InitspWindow()"*/
  116. /********************************************************************************
  117.  * Para     : NONE
  118.  * Return   : ER_NONE if ok,else the error.
  119.  * Description  : Init Window.
  120.  *******************************************************************************/
  121.     IF (sp_glist:=CreateContext({sp_glist}))=NIL THEN Raise(ER_CONTEXT)
  122.     IF (gsource:=CreateGadgetA(TEXT_KIND,sp_glist,[177,17,201,12,'Fichier Source',tattr,0,1,visual,0]:newgadget,[GTTX_BORDER,TRUE,GTTX_TEXT,'None.',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  123.     IF (gdestin:=CreateGadgetA(TEXT_KIND,gsource,[177,31,201,12,'Dossier Destination',tattr,1,1,visual,0]:newgadget,[GTTX_BORDER,TRUE,GTTX_TEXT,'None.',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  124.     IF (gcap:=CreateGadgetA(MX_KIND,gdestin,[28,47,17,9,'',tattr,2,2,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTMX_LABELS,['880 Ko.','1600 Ko.',0],GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  125.     IF (gbuf:=CreateGadgetA(MX_KIND,gcap,[269,47,17,9,'',tattr,3,2,visual,0]:newgadget,[GA_RELVERIFY,TRUE,GTMX_LABELS,['65535 Ko.','131070 Ko.','262140 Ko.',0],GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  126.     IF (gload:=CreateGadgetA(BUTTON_KIND,gbuf,[138,48,101,12,'Load',tattr,4,16,visual,0]:newgadget,[GA_IMMEDIATE,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  127.     IF (gsplit:=CreateGadgetA(BUTTON_KIND,gload,[138,61,101,12,'Split',tattr,5,16,visual,0]:newgadget,[GA_IMMEDIATE,TRUE,GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  128.     IF (ginfo:=CreateGadgetA(TEXT_KIND,gsplit,[9,76,373,12,'',tattr,6,0,visual,0]:newgadget,[GTTX_BORDER,TRUE,GTTX_TEXT,'None.',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0]))=NIL THEN Raise(ER_GADGET)
  129.     Raise(ER_NONE)
  130. EXCEPT
  131.     RETURN exception
  132. ENDPROC
  133. PROC p_RenderspWindow(texte) /*"p_RenderspWindow(texte)"*/
  134. /********************************************************************************
  135.  * Para     : texte (STRING).
  136.  * Return   : NONE
  137.  * Description  : Rebuild graphical interface.
  138.  *******************************************************************************/
  139.    StrCopy(infotexte,texte,ALL)
  140.    IF conv=FALSE
  141.        Gt_SetGadgetAttrsA(gsource,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,'None.',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  142.        Gt_SetGadgetAttrsA(gdestin,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,'None.',GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  143.        Gt_SetGadgetAttrsA(ginfo,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,texte,GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  144.        Gt_SetGadgetAttrsA(gsplit,sp_window,NIL,[GA_DISABLED,TRUE,GT_UNDERSCORE,"_",TAG_DONE,0])
  145.    ELSE
  146.        Gt_SetGadgetAttrsA(gsource,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,dosfich_source,GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  147.        Gt_SetGadgetAttrsA(gdestin,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,dos_destin,GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  148.        Gt_SetGadgetAttrsA(ginfo,sp_window,NIL,[GTTX_BORDER,TRUE,GTTX_TEXT,texte,GTTX_COPYTEXT,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  149.        Gt_SetGadgetAttrsA(gsplit,sp_window,NIL,[GA_DISABLED,FALSE,GT_UNDERSCORE,"_",TAG_DONE,0])
  150.    ENDIF
  151.    DrawBevelBoxA(sp_window.rport,9,46,111,29,[GA_BORDER,TRUE,GT_VISUALINFO,visual,TAG_DONE,0])
  152.    DrawBevelBoxA(sp_window.rport,125,46,126,29,[GTBB_RECESSED,1,GT_VISUALINFO,visual,TAG_DONE,0])
  153.    DrawBevelBoxA(sp_window.rport,257,46,127,29,[GT_VISUALINFO,visual,TAG_DONE,0])
  154.    DrawBevelBoxA(sp_window.rport,9,13,376,32,[GA_BORDER,TRUE,GT_VISUALINFO,visual,TAG_DONE,0])
  155.    RefreshGList(gsource,sp_window,NIL,-1)
  156.    Gt_RefreshWindow(sp_window,NIL)
  157. ENDPROC
  158. PROC p_OpenspWindow() HANDLE /*"p_OpenspWindow()"*/
  159. /********************************************************************************
  160.  * Para     : NONE
  161.  * Return   : ER_NONE if ok,else the error.
  162.  * Description  : Open the window.
  163.  *******************************************************************************/
  164.     IF (sp_window:=OpenWindowTagList(NIL,
  165.                       [WA_LEFT,10,
  166.                        WA_TOP,10,
  167.                        WA_WIDTH,388,
  168.                        WA_HEIGHT,90,
  169.                        WA_IDCMP,IDCMP_CLOSEWINDOW+IDCMP_REFRESHWINDOW+IDCMP_GADGETDOWN,
  170.                        WA_FLAGS,$102E+WFLG_HASZOOM,
  171.                        WA_GADGETS,sp_glist,
  172.                        WA_TITLE,'SplitF v0.1 © 1994 NasGûl',
  173.                        WA_ZOOM,[10,10,388,11]:INT,
  174.                        WA_SCREENTITLE,'Made With GadToolsBox v2.0 © 1991-1993',
  175.                        TAG_DONE]))=NIL THEN Raise(ER_WINDOW)
  176.     p_RenderspWindow('None.')
  177.     Raise(ER_NONE)
  178. EXCEPT
  179.     RETURN exception
  180. ENDPROC
  181. PROC p_RemspWindow() /*"p_RemspWindow()"*/
  182. /********************************************************************************
  183.  * Para     : NONE
  184.  * Return   : NONE
  185.  * Description  : Remove the window.
  186.  *******************************************************************************/
  187.     IF sp_window THEN CloseWindow(sp_window)
  188.     IF sp_glist THEN FreeGadgets(sp_glist)
  189. ENDPROC
  190. /*********************************/
  191. /* Message proc                  */
  192. /*********************************/
  193. PROC p_LookAllMessage() /*"p_LookAllMessage()"*/
  194. /********************************************************************************
  195.  * Para     : NONE
  196.  * Return   : NONE
  197.  * Description  : Look All Message (window and CtrlC()).
  198.  *******************************************************************************/
  199.     DEF sigreturn
  200.     DEF spport:PTR TO mp
  201.     IF sp_window THEN spport:=sp_window.userport ELSE spport:=NIL
  202.     sigreturn:=Wait(Shl(1,spport.sigbit) OR
  203.                     $F000)
  204.     IF (sigreturn AND Shl(1,spport.sigbit))
  205.         p_LookspMessage()
  206.     ENDIF
  207.     IF (sigreturn AND $F000)
  208.         reelquit:=TRUE
  209.     ENDIF
  210. ENDPROC
  211. PROC p_LookspMessage() /*"p_LookspMessage()"*/
  212. /********************************************************************************
  213.  * Para     : NONE
  214.  * Return   : NONE
  215.  * Description  : Look window mesaage.
  216.  *******************************************************************************/
  217.    DEF mes:PTR TO intuimessage
  218.    DEF g:PTR TO gadget
  219.    DEF selec
  220.    DEF type=0,infos=NIL
  221.    DEF long=NIL
  222.    IF mes:=Gt_GetIMsg(sp_window.userport)
  223.       type:=mes.class
  224.       SELECT type
  225.          CASE IDCMP_MENUPICK
  226.             infos:=mes.code
  227.             SELECT infos
  228.             ENDSELECT
  229.          CASE IDCMP_REFRESHWINDOW
  230.             p_RenderspWindow(infotexte)
  231.          CASE IDCMP_GADGETDOWN
  232.             g:=mes.iaddress
  233.             infos:=g.gadgetid
  234.             SELECT infos
  235.                CASE GA_GSOURCE
  236.                CASE GA_GDESTIN
  237.                CASE GA_GCAP
  238.                   selec:=mes.code
  239.                   SELECT selec
  240.                      CASE 0;  startcap:=12
  241.                      CASE 1;  startcap:=24
  242.                   ENDSELECT
  243.                CASE GA_GBUF
  244.                   selec:=mes.code
  245.                   SELECT selec
  246.                      CASE 0;   valbuf:=1
  247.                      CASE 1;   valbuf:=2
  248.                      CASE 2;   valbuf:=4
  249.                   ENDSELECT
  250.                CASE GA_GLOAD
  251.                   IF p_FileRequester(F_LOAD,'charger un fichier')
  252.                      IF (long:=FileLength(dosfich_source))>800000
  253.                         IF p_FileRequester(F_SAVE,'Choississez un dossier')
  254.                            conv:=TRUE
  255.                            reellong:=long
  256.                            StringF(infotexte,'Longueur :\d Octets.',long)
  257.                            p_RenderspWindow(infotexte)
  258.                         ELSE
  259.                            conv:=FALSE
  260.                            StrCopy(dosfich_source,'',ALL)
  261.                            p_RenderspWindow('None.')
  262.                         ENDIF
  263.                      ELSE
  264.                         conv:=FALSE
  265.                         StrCopy(dosfich_source,'',ALL)
  266.                         p_RenderspWindow('Ce fichier tient sur 1 disk.')
  267.                      ENDIF
  268.                   ELSE
  269.                      conv:=FALSE
  270.                      StrCopy(dosfich_source,'',ALL)
  271.                      p_RenderspWindow('None.')
  272.                   ENDIF
  273.                CASE GA_GSPLIT
  274.                   IF p_DoSplitFichier(dosfich_source,fich_destin,dos_destin,reellong)=ER_NONE THEN p_RenderspWindow('Split Ok.')
  275.                CASE GA_GINFO
  276.             ENDSELECT
  277.          CASE IDCMP_CLOSEWINDOW
  278.             reelquit:=TRUE
  279.       ENDSELECT
  280.       Gt_ReplyIMsg(mes)
  281.    ENDIF
  282.    reel_buff:=Mul(65535,valbuf)
  283.    capacite:=Div(startcap,valbuf)
  284. ENDPROC
  285. /*********************************/
  286. /* Application Proc              */
  287. /*********************************/
  288. PROC p_FileRequester(func,titre) /*"p_FileRequester(func,titre)"*/
  289. /********************************************************************************
  290.  * Para     : function (F_LOAD ou F_SAVE),titre (STRING).
  291.  * Return   : TRURE if ok,else FASLE.
  292.  * Description  : PopUp a AslFileRequester.
  293.  *******************************************************************************/
  294.     DEF req:PTR TO filerequestr
  295.     DEF ret=FALSE
  296.     DEF tag
  297.     DEF doit
  298.     IF func=F_LOAD
  299.         tag:=[ASL_FUNCFLAGS,FILF_PATGAD,ASL_HAIL,titre,0]
  300.     ELSE
  301.         tag:=[ASL_FUNCFLAGS,FILF_SAVE,ASL_EXTFLAGS1,FIL1F_NOFILES,ASL_HAIL,titre,0]
  302.     ENDIF
  303.     IF req:=AllocAslRequest(ASL_FILEREQUEST,tag)
  304.         IF doit:=RequestFile(req)
  305.             SELECT func
  306.                CASE F_LOAD
  307.                     StringF(fich_destin,'\s',req.file)
  308.                     AddPart(req.dir,'',256)
  309.                     StringF(dosfich_source,'\s\s',req.dir,req.file)
  310.                CASE F_SAVE
  311.                     StringF(dos_destin,'\s',req.dir)
  312.             ENDSELECT
  313.         ENDIF
  314.         FreeAslRequest(req)
  315.     ENDIF
  316.     IF doit
  317.       RETURN TRUE
  318.     ENDIF
  319.     RETURN ret
  320. ENDPROC
  321. PROC p_DoSplitFichier(dfs,fichier_source,dossier_destin,longueur) HANDLE /*"p_DoSplitFichier(dfs,fichier_source,dossier_destin,longueur)"*/
  322. /********************************************************************************
  323.  * Para     : dossier/fichier source,fichier destination,dossier destination,longueur.
  324.  * Return   : ER_NONE if ok,else the error.
  325.  * Description  : Split the file.
  326.  *******************************************************************************/
  327.     DEF h_s=NIL,h_d=NIL
  328.     DEF b,j
  329.     DEF fichier_destin[256]:STRING
  330.     DEF data=NIL,resteboucle=NIL,reste=NIL
  331.     AddPart(dossier_destin,'',256)
  332.     nbrsfichier:=SpFix(SpDiv(SpMul(SpFlt(capacite),SpFlt(reel_buff)),SpFlt(longueur)))
  333.     restelastfichier:=longueur-Mul(nbrsfichier,Mul(capacite,reel_buff))
  334.     StringF(infotexte,'Nbrs de fichiers:\d (\d Octets.)',nbrsfichier,Mul(capacite,reel_buff))
  335.     p_RenderspWindow(infotexte)
  336.     Delay(50)
  337.     StringF(infotexte,'Longueur du dernier fichier:\d Octets.',restelastfichier)
  338.     p_RenderspWindow(infotexte)
  339.     Delay(50)
  340.     IF h_s:=Open(dfs,1005)
  341.         FOR b:=1 TO nbrsfichier
  342.             StringF(fichier_destin,'\s\s.Part\d',dossier_destin,fichier_source,b)
  343.             StringF(infotexte,'\s',fichier_destin)
  344.             p_RenderspWindow(infotexte)
  345.             Delay(10)
  346.             IF h_d:=Open(fichier_destin,1006)
  347.                 FOR j:=1 TO capacite
  348.                     data:=New(reel_buff)
  349.                     Read(h_s,data,reel_buff)
  350.                     Write(h_d,data,reel_buff)
  351.                     Dispose(data)
  352.                     CtrlC()
  353.                 ENDFOR
  354.                 IF h_d THEN Close(h_d)
  355.             ENDIF
  356.             CtrlC()
  357.         ENDFOR
  358.         StringF(fichier_destin,'\s\s.Part\d',dossier_destin,fichier_source,b)
  359.         StringF(infotexte,'Dernier Fichier :\s',fichier_destin)
  360.         p_RenderspWindow(infotexte)
  361.         Delay(10)
  362.         IF h_d:=Open(fichier_destin,1006)
  363.             resteboucle:=SpFix(SpDiv(SpFlt(reel_buff),SpFlt(restelastfichier)))
  364.             FOR b:=1 TO resteboucle
  365.                 data:=New(reel_buff)
  366.                 Read(h_s,data,reel_buff)
  367.                 Write(h_d,data,reel_buff)
  368.                 Dispose(data)
  369.                 CtrlC()
  370.             ENDFOR
  371.             reste:=restelastfichier-Mul(resteboucle,reel_buff)
  372.             data:=New(reste)
  373.             Read(h_s,data,reste)
  374.             Write(h_d,data,reste)
  375.             Dispose(data)
  376.         ENDIF
  377.     ENDIF
  378.     Raise(ER_NONE)
  379. EXCEPT
  380.     IF h_d THEN Close(h_d)
  381.     IF h_s THEN Close(h_s)
  382.     IF data THEN Dispose(data)
  383.     RETURN exception
  384. ENDPROC
  385. /*********************************/
  386. /* Main Proc                     */
  387. /*********************************/
  388. PROC main() HANDLE /*"main()"*/
  389. /********************************************************************************
  390.  * Para     : NONE
  391.  * Return   : ER_NONE if ok,else the error.
  392.  * Description  : Main Procedure.
  393.  *******************************************************************************/
  394.     DEF testmain
  395.     tattr:=['topaz.font',8,0,0]:textattr
  396.     IF (testmain:=p_OpenLibraries())<>ER_NONE THEN Raise(testmain)
  397.     IF (testmain:=p_SetUpScreen())<>ER_NONE THEN Raise(testmain)
  398.     IF (testmain:=p_InitspWindow())<>ER_NONE THEN Raise(testmain)
  399.     IF (testmain:=p_OpenspWindow())<>ER_NONE THEN Raise(testmain)
  400.     REPEAT
  401.         p_LookAllMessage()
  402.     UNTIL reelquit=TRUE
  403.     Raise(ER_NONE)
  404. EXCEPT
  405.     p_RemspWindow()
  406.     p_SetDownScreen()
  407.     p_CloseLibraries()
  408.     SELECT exception
  409.         CASE ER_LOCKSCREEN; WriteF('Lock Screen Failed.\n')
  410.         CASE ER_VISUAL;     WriteF('Error Visual.\n')
  411.         CASE ER_CONTEXT;    WriteF('Error Context.\n')
  412.         CASE ER_MENUS;      WriteF('Error Menus.\n')
  413.         CASE ER_GADGET;     WriteF('Error Gadget.\n')
  414.         CASE ER_WINDOW;     WriteF('Error Window.\n')
  415.     ENDSELECT
  416. ENDPROC
  417.